// 该案例是一个建立菜单栏的应用案例，其包括了File、Edit、View、Insert和Tools共5个菜单栏
// 其中File菜单栏还有4个子菜单，分别是“New”、“Open”、“Save”、”Exit“。
// 代码在子函数CreateMenu中创建File菜单栏的子菜单，然后使用gtk_menu_item_set_submenu函数将子菜单和菜单栏连接起来
#include <gtk/gtk.h>

GtkWidget *CreateMenuItem(GtkWidget *MeauBar, char *test){
	GtkWidget *MeauItem;
	// 创建菜单项
	MeauItem = gtk_menu_item_new_with_label(test);
	// 将菜单项加入菜单条
	gtk_menu_shell_append(GTK_MENU_SHELL(MeauBar),MeauItem);
	gtk_widget_show(MeauItem);
	return MeauItem;
}

// 创建子菜单函数
GtkWidget *CreateMenu(GtkWidget *MenuFile){
	// 定义子菜单
	GtkWidget *Meau,*Exit;
	Meau = gtk_menu_new();

	CreateMenuItem(Meau,"New");	
	CreateMenuItem(Meau,"Open");	
	CreateMenuItem(Meau,"Save");	
	Exit = CreateMenuItem(Meau,"Exit");	
	// 按键需要使用activite, clicked是点击按钮的操作
	gtk_signal_connect(GTK_OBJECT(Exit),"activate",GTK_SIGNAL_FUNC(gtk_main_quit),NULL);
	// 将父菜单和子菜单联系起来
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuFile),Meau);
	gtk_widget_show(Meau);
}


int main(int argc, char *argv[]){
	// 定义窗体、组合框、菜单条
	GtkWidget *window,*box,*MeauBar,*MeauItemFile;
	
	gtk_init(&argc,&argv);
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"菜单栏测试");
	gtk_widget_set_usize(window,300,300);
	gtk_widget_set_uposition(window,200,200);
	gtk_signal_connect(GTK_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);

	// 创建box,纵向
	box = gtk_vbox_new(FALSE,0);
	gtk_container_add(GTK_CONTAINER(window),box);
	
	// 创建菜单栏
	MeauBar = gtk_menu_bar_new();
	// 创建File菜单
	MeauItemFile = CreateMenuItem(MeauBar,"File");
	// 在File菜单中创建子菜单
	CreateMenu(MeauItemFile);
	
	CreateMenuItem(MeauBar,"Edit");
	CreateMenuItem(MeauBar,"View");
	CreateMenuItem(MeauBar,"Insert");
	CreateMenuItem(MeauBar,"Tools");

	// 将菜单栏插入到box中
	gtk_box_pack_start(GTK_BOX(box),MeauBar,FALSE,FALSE,0);
	
	gtk_widget_show(box);
	gtk_widget_show(MeauBar);
	gtk_widget_show(window);
	gtk_main();

	return 0;

}

